package com.example.demo.service;

import com.mybatisflex.core.paginate.Page;
import com.example.demo.entity.User;
import com.example.demo.dto.UserDTO;
import com.example.demo.vo.UserVO;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService extends IService<User> {

    /**
     * 创建用户
     */
    void createUser(UserDTO userDTO);

    /**
     * 根据ID获取用户
     */
    User getUserById(Long id);

    /**
     * 更新用户信息
     */
    void updateUser(UserDTO userDTO);

    /**
     * 删除用户（逻辑删除）
     */
    void deleteUser(Long id);

    /**
     * 分页查询用户
     */
    Page<User> paginateUser(int pageNumber, int pageSize, String keyword);

    /**
     * 获取用户列表及余额信息
     */
    List<UserVO> listUsersWithBalance();

    /**
     * 根据部门查询用户
     */
    List<User> getUsersByDepartment(String deptName);
}